__author__ = 'CrazyCode'

import sys


def readfile(filename):
    """
        这个程序用来模仿Linux/Unix用户属性的cat命令。你只需要指明某些文本文件的名字，这个程序就会把他们打印输出。

        在python程序运行的时候，既不是在交互模式下， 在sys.argv列表中总是至少有一个项目。
        他就是当前运行的程序名称，作为sys.argv[0]其他的命令行参数在这个项目之后。

        为了使这个程序对用户更加友好，我们提供了一些用户可以执行的选项来了解更多的程序内容。我们使用第一个参数来检验我们的程序是否被指定了选项。
        如果使用了--version选项，程序的版本号将被打印出来，类似的，如果指定--help选项，我们提供了一些关于程序的解释。
        我们使用sys.exit函数退出正在运行的程序。和以往一样，你可以看一下help来了解更多详情。

        如果没有指定任何选项，而是为程序提供文件名的话，他就简单的打印每个文件地每一行，按照命令行中的顺序一个文件接着一个文件地打印。

        顺便说一下，名称cat是concatenate的缩写，他基本表明了程序的功能——它可以在输出打印一个文件或者把两个或两个以上文件链接/级联在一起打印。


        更多sys的内容
        sys.version字符串给你提供安装的python的版本信息。sys.version_info元祖则提供一个更简单的方法来使你的程序具备Python版本要求功能。

        对于有经验的程序，sys模块中其他令人感兴趣的项目有sys.stdin，sys.stdout和sys.stderr他们分别对应你的程序的标准输入，标准输出和标准错误流。
    """
    f = open(filename)
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        print(line)
        f.close()


if len(sys.argv) < 2:
    print("No action specified")
    sys.exit()

if sys.argv[1].startswith("--"):
    option = sys.argv[1][2:]
    if option == "version":
        print("Version 1.2")
    elif option == "help":
        print("""
                这个程序将文件按标准输出打印出来。
                This program prints files to the standard output .
                任意数量的文件可以被打印。
                Any number of files can be specified.
                操作指令包含：
                Options include:
                    -- version : 打印版本号
                    -- version : prints the version number
                    -- help : 显示此帮助文档
                    -- help : Display this help
                    """)
    else:
        print("Unknow option")
    sys.exit()
else:
    for filename in sys.argv[1:]:
        readfile(filename)

